import http from "http"
import qs from "querystring"
import fs from "fs"
import url from "url"
import path from "path"
import {
    readFlie,
    writeFlie,
    unlick,
    writeFiles,
    filejson
} from "../fs_file包封装/node_modules/fs_file/index"
/**
 * 
 * let {readFlie} = require("./readFile")   // 读取文件内容模块
let {writeFlie} = require("./writeFile")  //写入文件内容模块
let {unlick} = require("./unLink")  //删除目录或文件内容模块
let {writeFiles} = require("./writes")  //复制目录或文件内容模块
let {filejson} = require("./fileJSON")  // 将目录转成JSON  
 */
//获取请求信息
//解构请求信息
//获取数据库相对应的数据信息
//信息比对
//比对成功执行响应操作（增删改查）
const server = http.createServer((req, res) => {
    console.log("服务器执行");
    //判断请求方式
    switch (req.method) {
        case "GET": //GET请求时
            //获取并解构请求信息
            httpEnd(req, res, "GET");
            break
        case "POST":
            //获取并解构请求信息
            httpEnd(req, res, "POST");
            break //POST请求时
    }

})
server.listen(3333, () => {
    console.log("服务器启动");
})

function httpUrl(req, res) {

}

function httpEnd(req, res, ent) {
    //获取请求栏信息对象
    let ourl = url.parse(req.url)
    let {
        pathname, //拿到请求发送的路径
        query //GET请求携带的请求参数
    } = ourl
    if (ent === "GET") {
        //转为绝对路径
        let filePath = path.join(__dirname, pathname)
        //获取文件信息
        let html = readFlie(filePath)
    
        //响应信息

        if (pathname === "/login") {
            var  arr = JSON.parse(readFlie(path.join(__dirname,"/public/json.json")))
            let {
                user,
                pass
            } = qs.parse(query)
            //判断并响应
            let text = isuser(user, pass, arr) === 1 ? "登录成功" : isuser(user, pass, arr) === 2 ? "密码错误" : "账号不存在"
            
            resret({
                    res,
                    text
                })
         
        }
        res.end(html)
    }
 if (ent === "POST") {



        //使用buffer流 获取信息
        //创建buffer池
        var buf = Buffer.alloc(0)
        //获取每次接收到的 buffer 数据
        req.on("data", chunk => {
            buf = Buffer.concat([buf, chunk])
        })
        //接收完毕以后解构buffer池的数据
        req.on("end", () => {
            let {
                user,
                pass
            } = qs.parse(buf.toString()) //解构

            //拿到请求路径数据
            let brr = JSON.parse(readFlie(path.join(__dirname, "./public/json.json")))
       
            //处理请求
            switch (pathname) {
                case "/registry":
                    console.log("增加");
                    let off = isuser(user, pass, brr) === 3
                    if(off){
                        brr.push({
                            user,
                            pass
                        })
                        writeFlie(path.join(__dirname, "/public/json.json"), JSON.stringify(brr))
                    }else{
                        resret({
                            res,
                            text: "账号已经存在"
                        })
                    }
                    
                    break
                case "/remove":
                    console.log("删除");
                    if(isuser(user, pass, brr) === 1){
                        brr.forEach((item, i) => {
                            if (item["user"] === user) {
                                brr[i] = {}
                                writeFlie(path.join(__dirname, "/public/json.json"), JSON.stringify(brr))
                                resret({
                                    res,
                                    text: "删除成功"
                                })
    
                            }
    
                        });
                    }
              

                    break
                case "/amend":
                    console.log("修改");
                    // let off = isuser(user, pass, arr) === 1
                    // arr.forEach((item, i) => {
                    //     if (item["user"] === user) arr[i] = {}

                    // });
                    break
                case "/check":
                    console.log("查看");
                    break


            }

        })
    }

    //解构请求信息
    //获取数据库相对应的数据信息
    //信息比对
    //比对成功执行响应操作（增删改查）
}
//返回数据
function resret(obj) {
    obj.num = obj.num ? obj.num : 200
    obj.ok = obj.ok ? obj.ok : "ok"
    obj.pin = obj.pin ? obj.pin : "text/plain;charset=utf-8"
    obj.res.writeHead(obj.num, obj.ok, {
        "content-type": obj.pin
    })
    obj.res.end(obj.text)
}
//增删改查
// function operation(){

// }
//判断账号密码是否正确
function isuser(user, pass, arr) {
    if (arr.find(item => item["user"] === user)) {
        if (arr.find(item => item["pass"] === pass)) {
            return 1 //账号密码正确
        } else {
            return 2 //密码错误
        }
    } else {
        return 3 //账号不存在
    }
}